NXP Semiconductors /LPC800 /I2C /STAT

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

Interpret as STAT

31 2827 2423 2019 1615 1211 87 43 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (NO_SERVICE_NEEDED_T)MSTPENDING 0 (IDLE_THE_MASTER_FUN)MSTSTATE 0 (NO_LOSS_NO_ARBITRAT)MSTARBLOSS 0RESERVED 0 (NO_STARTSTOP_ERROR_)MSTSTSTPERR 0RESERVED 0 (NO_SERVICE_NEEDED_T)SLVPENDING 0 (RECEIVED_ADDRESS_PL)SLVSTATE 0 (STRETCHING_THE_SLAV)SLVNOTSTR 0 (SLAVE_ADDRESS_0_WAS_)SLVIDX 0 (NOT_SELECTED_THE_SL)SLVSEL 0 (NOT_DESELECTED_THE_)SLVDESEL 0 (NO_DATA_THE_MONITOR)MONRDY 0 (NO_OVERRUN_MONITOR_)MONOV 0 (INACTIVE_THE_MONITO)MONACTIVE 0 (NOT_IDLE_THE_I2C_BU)MONIDLE 0RESERVED 0 (NO_TIME_OUT_I2C_BUS)EVENTTIMEOUT 0 (NO_TIME_OUT_SCL_LOW)SCLTIMEOUT 0RESERVED

MONACTIVE=INACTIVE_THE_MONITO, SLVSEL=NOT_SELECTED_THE_SL, SLVPENDING=NO_SERVICE_NEEDED_T, MSTSTATE=IDLE_THE_MASTER_FUN, MONOV=NO_OVERRUN_MONITOR_, MONRDY=NO_DATA_THE_MONITOR, SLVNOTSTR=STRETCHING_THE_SLAV, MSTPENDING=NO_SERVICE_NEEDED_T, SLVIDX=SLAVE_ADDRESS_0_WAS_, SLVSTATE=RECEIVED_ADDRESS_PL, MSTARBLOSS=NO_LOSS_NO_ARBITRAT, SCLTIMEOUT=NO_TIME_OUT_SCL_LOW, MONIDLE=NOT_IDLE_THE_I2C_BU, EVENTTIMEOUT=NO_TIME_OUT_I2C_BUS, SLVDESEL=NOT_DESELECTED_THE_, MSTSTSTPERR=NO_STARTSTOP_ERROR_

Description

Status register for Master, Slave, and Monitor functions.

Fields

MSTPENDING

Master Pending. Indicates whether the Master function needs software service. This flag will cause an interrupt when set if enabled via the INTENSET register. The MSTPENDING flag is automatically cleared when a 1 is written to the MSTCONTINUE bit in the MSTCTL register.

0 (NO_SERVICE_NEEDED_T): No service needed. The Master function does not currently need service.

1 (SERVICE_NEEDED_THE_): Service needed. The Master function needs service. Information on what is needed can be found in the adjacent MSTSTATE field.

MSTSTATE

Master State code. Each value of this field indicates a specific required service for the Master function. All other values are reserved.

0 (IDLE_THE_MASTER_FUN): Idle. The Master function is available to be used for a new transaction.

1 (RECEIVE_READY_RECEI): Receive ready. Received data available (Master Receiver mode). Address plus Read was previously sent and Acknowledged by slave.

2 (TRANSMIT_READY_DATA): Transmit ready. Data can be transmitted (Master Transmitter mode). Address plus Write was previously sent and Acknowledged by slave.

3 (ADDRESS_SLAVE_NACKE): Address. Slave Nacked address.

4 (DATA_SLAVE_NACKED_T): Data. Slave Nacked transmitted data.

MSTARBLOSS

Master Arbitration Loss flag. This flag can be cleared by software writing a 1 to this bit. It is also cleared automatically a 1 is written to MSTCONTINUE.

0 (NO_LOSS_NO_ARBITRAT): No loss. No Arbitration Loss has occurred.

1 (ARBITRATION_LOSS_TH): Arbitration loss. The Master function has experienced an Arbitration Loss. At this point, the Master function has already stopped driving the bus and gone to an idle state. Software can respond by doing nothing, or by sending a Start in order to attempt to gain control of the bus when it next becomes idle.

RESERVED

Reserved. Read value is undefined, only zero should be written.

MSTSTSTPERR

Master Start/Stop Error flag. This flag can be cleared by software writing a 1 to this bit. It is also cleared automatically a 1 is written to MstContinue.

0 (NO_STARTSTOP_ERROR_): No Start/Stop Error has occurred.

1 (STARTSTOP_ERROR_HAS): Start/stop error has occurred. The Master function has experienced a Start/Stop Error. A Start or Stop was detected at a time when it is not allowed by the I2C specification. The Master interface has stopped driving the bus and gone to an idle state, no action is required. A request for a Start could be made, or software could attempt to insure that the bus has not stalled.

RESERVED

Reserved. Read value is undefined, only zero should be written.

SLVPENDING

Slave Pending. Indicates whether the Slave function needs software service. This flag will cause an interrupt when set if enabled via INTENSET. The SLVPENDING flag is read-only and is automatically cleared when a 1 is written to the SLVCONTINUE bit in the MSTCTL register.

0 (NO_SERVICE_NEEDED_T): No service needed. The Slave function does not currently need service.

1 (SERVICE_NEEDED_THE_): Service needed. The Slave function needs service. Information on what is needed can be found in the adjacent SLVSTATE field.

SLVSTATE

Slave State code. Each value of this field indicates a specific required service for the Slave function. All other values are reserved.

0 (RECEIVED_ADDRESS_PL): Received. Address plus R/W received. At least one of the four slave addresses has been matched by hardware.

1 (DATA_AVAILABLE_RECE): Data available. Received data is available (Slave Receiver mode).

2 (DATA_READY_FOR_TRANS): Data ready for transmit. Data can be transmitted (Slave Transmitter mode).

3 (RESERVED_): Reserved.

SLVNOTSTR

Slave Not Stretching. Indicates when the slave function is stretching the I2C clock. This is needed in order to gracefully invoke Deep Sleep or Power-down modes during slave operation. This read-only flag reflects the slave function status in real time.

0 (STRETCHING_THE_SLAV): Stretching. The slave function is currently stretching the I2C bus clock. Deep-Sleep or Power-down mode cannot be entered at this time.

1 (NOT_STRETCHING_THE_): Not stretching. The slave function is not currently stretching the I 2C bus clock. Deep-sleep or Power-down mode could be entered at this time.

SLVIDX

Slave address match Index. This field is valid when the I2C slave function has been selected by receiving an address that matches one of the slave addresses defined by any enabled slave address registers, and provides an identification of the address that was matched. It is possible that more than one address could be matched, but only one match can be reported here.

0 (SLAVE_ADDRESS_0_WAS_): Slave address 0 was matched.

1 (SLAVE_ADDRESS_1_WAS_): Slave address 1 was matched.

2 (SLAVE_ADDRESS_2_WAS_): Slave address 2 was matched.

3 (SLAVE_ADDRESS_3_WAS_): Slave address 3 was matched.

SLVSEL

Slave selected flag. SLVSEL is set after an address match when software tells the Slave function to acknowledge the address. It is cleared when another address cycle presents an address that does not match an enabled address on the Slave function, when slave software decides to Nack a matched address, or when there is a Stop detected on the bus. SLVSEL is not cleared if software Nacks data.

0 (NOT_SELECTED_THE_SL): Not selected. The Slave function is not currently selected.

1 (SELECTED_THE_SLAVE_): Selected. The Slave function is currently selected.

SLVDESEL

Slave Deselected flag. This flag will cause an interrupt when set if enabled via INTENSET. This flag can be cleared by writing a 1 to this bit.

0 (NOT_DESELECTED_THE_): Not deselected. The Slave function has not become deselected. This does not mean that it is currently selected. That information can be found in the SLVSEL flag.

1 (DESELECTED_THE_SLAV): Deselected. The Slave function has become deselected. This is specifically caused by the SLVSEL flag changing from 1 to 0. See the description of SLVSEL for details on when that event occurs.

MONRDY

Monitor Ready. This flag is cleared when the MONRXDAT register is read.

0 (NO_DATA_THE_MONITOR): No data. The Monitor function does not currently have data available.

1 (DATA_WAITING_THE_MO): Data waiting. The Monitor function has data waiting to be read.

MONOV

Monitor Overflow flag.

0 (NO_OVERRUN_MONITOR_): No overrun. Monitor data has not overrun.

1 (OVERRUN_A_MONITOR_D): Overrun. A Monitor data overrun has occurred. This can only happen when Monitor clock stretching not enabled via the MONCLKSTR bit in the CFG register. Writing 1 to this bit clears the flag.

MONACTIVE

Monitor Active flag. This flag indicates when the Monitor function considers the I2C bus to be active. Active is defined here as when some Master is on the bus: a bus Start has occurred more recently than a bus Stop.

0 (INACTIVE_THE_MONITO): Inactive. The Monitor function considers the I2C bus to be inactive.

1 (ACTIVE_THE_MONITOR_): Active. The Monitor function considers the I2C bus to be active.

MONIDLE

Monitor Idle flag. This flag is set when the Monitor function sees the I2C bus change from active to inactive. This can be used by software to decide when to process data accumulated by the Monitor function. This flag will cause an interrupt when set if enabled via the INTENSET register . The flag can be cleared by writing a 1 to this bit.

0 (NOT_IDLE_THE_I2C_BU): Not idle. The I2C bus is not idle, or this flag has been cleared by software.

1 (IDLE_THE_I2C_BUS_HA): Idle. The I2C bus has gone idle at least once since the last time this flag was cleared by software.

RESERVED

Reserved. Read value is undefined, only zero should be written.

EVENTTIMEOUT

Event Time-out Interrupt flag. Indicates when the time between events has been longer than the time specified by the TIMEOUT register. Events include Start, Stop, and clock edges. The case of SCL remaining low longer than TIMEOUT is not reported by this flag, it is reported in by the SCL Time-out flag. The flag is cleared by writing a 1 to this bit.

0 (NO_TIME_OUT_I2C_BUS): No time-out. I2C bus events have not caused a timeout.

1 (EVENT_TIME_OUT_THE_): Event time-out. The time between I2C bus events has been longer than the time specified by the I2C Timeout register.

SCLTIMEOUT

SCL Time-out Interrupt flag. Indicates when SCL has remained low longer than the time specific by the TIMEOUT register. The flag is cleared by writing a 1 to this bit.

0 (NO_TIME_OUT_SCL_LOW): No time-out. SCL low time has not caused a timeout.

1 (TIME_OUT_SCL_LOW_TI): Time-out. SCL low time has caused a timeout.

RESERVED

Reserved. Read value is undefined, only zero should be written.

Links

()